跳到主要内容

DNS 服务

DNS(Domain Name System)协议也是一个应用层协议,提供机器域名到 IP 地址的转换

Linux 下访问

Linux 下的 /etc/resolv.conf 它是 DNS 客户机配置文件,用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序。

$ cat /etc/resolv.conf
# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
# [network]
# generateResolvConf = false
nameserver 172.29.80.1

可以使用 host 命令去访问 DNS 服务器,-t 选项是告诉 DNS 协议使用哪种查询类型(看下面的 “DNS 的解析类型” 小节)

$ host -t A www.baidu.com
www.baidu.com has address 183.232.231.172

resolv.conf 的关键字主要有四个,分别是:

nameserver              #定义DNS服务器的IP地址
domain #定义本地域名
search #定义域名的搜索列表
sortlist #对返回的域名进行排序

最主要是 nameserver 关键字,如果没指定 nameserver 就找不到 DNS 服务器,其它关键字是可选的。

nameserver:表示解析域名时使用该地址指定的主机为域名服务器。其中域名服务器是按照文件中出现的顺序来查询的,且只有当第一个 nameserver 没有反应时才查询下面的 nameserver。

提示

WSL 就是通过这个 nameserver 访问到主机的代理的

export hostip=$(cat /etc/resolv.conf |grep -oP '(?<=nameserver\ ).*')
export https_proxy="http://${hostip}:7890"
export http_proxy="http://${hostip}:7890"

使用注意

常见的域名前缀

域名前缀,常见用法有:

  • www:解析后的域名为 www.example.com
  • @:直接解析主域名 example.com
  • *:泛解析,匹配其他所有域名 *.example.com
  • mail:将域名解析为 mail.example.com,通常用于解析邮箱服务器
  • 二级域名:如 abc.example.com
  • 手机网站:如 m.example.com(mobile phone)

泛域名解析:泛域名解析是指将 * 域名解析到同一 IP。在域名前添加任何子域名,均可访问到所指向的 WEB 地址。假如域名为 a.com ,也就是说域名 a.com 之下所设的 *.a.com 全部解析到同一个 IP 地址上去。比如设 **.a.com 就会自己自动解析到与 a.com 同一个 IP 地址上去。

域名智能解析:域名智能解析就是除了具备一般的基本 DNS 解析功能外,还可以自动识别浏览者的来源,并把相同的域名智能 DNS解析到双线路机器的网通或电信的 IP, 以便就近访问这个网站。

TTL值:全称是 “生存时间(Time To Live)”,它表示 DNS 记录在 DNS 服务器上缓存时间。TTL 的时间长度单位是秒,一般为3600秒。比如:在访问 www.example.com 时,如果在 DNS 服务器的缓存中没有该记录,就会向某个 NS 服务器发出请求,获得该记录后,该记录会在 DNS 服务器上保存 TTL 的时间长度,在TTL有效期内访问 www.example.com,DNS 服务器会直接缓存中返回刚才的记录。

URL转发:就是转发功能,如果没有一台独立的服务器(也就是没有一个独立的 IP 地址)或者还有一个域名 B,想访问 A 域名时访问到 B 域名的内容,这时就可以通过 URL 转发来实现。URL 转发和 CNAME 的主要区别是:URL 转发可以转发到某一个目录下,甚至某一个文件上。而 CNAME 不可以。(狗哥当时做的重定向操作应该就是通过这种方式)

DNS 的解析类型

  • A记录: 将域名指向一个IPv4地址
  • AAAA记录: 将主机名(或域名)指向一个IPv6地址(例如:ff03:0:0:0:0:0:0:c1
  • CNAME记录: CNAME 也是一个常见的记录类别,它是一个别名记录,作用是将域名指向一个域名,实现与被指向域名相同的访问效果
  • MX记录: MX记录就是邮件交换记录,邮件域名对邮件服务器(域名)的映射。例如,当有人发邮件给 vincen@example.com 时,系统将对 example.com 进行 DNS 中的 MX 记录解析(也可以使用二级域名做邮件服务器)
  • NS记录: 域名解析服务器记录,如果要将子域名指定某个域名服务器来解析,需要设置 NS 记录
  • TXT记录: 可任意填写,可为空。一般做一些验证记录时会使用此项,如:做SPF(反垃圾邮件)记录,在配置 HTTPS 时也用到了这个
  • SRV记录: SRV记录的作用是说明一个服务器能够提供什么样的服务。格式为:服务的名字.协议的类型(例如:_example-server._tcp)。
  • SOA记录: SOA 叫做起始授权机构记录,NS 用于标识多台域名解析服务器,SOA 记录用于在众多 NS 记录中哪一台是主服务器
  • PTR记录: PTR 记录是 A记录的逆向记录,又称做 IP 反查记录或指针记录,负责将 IP 反向解析为域名
  • 显性URL转发记录: 将域名指向一个 http(s) 协议地址,访问域名时,自动跳转至目标地址。例如:将 www.example.cn 显性转发到 www.example.com 后,访问 www.example.cn 时,地址栏显示的地址为:www.example.com
  • 隐性URL转发记录: 将域名指向一个 http(s) 协议地址,访问域名时,自动跳转至目标地址,隐性转发会隐藏真实的目标地址。例如:将 www.example.cn 显性转发到 www.example.com 后,访问 www.example.cn 时,地址栏显示的地址仍然是: www.example.cn

References

/etc/resolv.conf文件详解